package com.culture.config.wrapper;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Optional;
import java.util.Set;
import java.util.stream.Collectors;

import com.culture.config.dao.entity.RoleMenu;
import com.culture.config.dao.entity.RoleMenuPage;
import com.culture.config.model.po.*;
import com.culture.config.util.AuthenticationUtil;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;

import lombok.experimental.UtilityClass;

@UtilityClass
public class RoleMenuWrapper {
    public static RoleMenuPage wrapRoleMenuQuery(RoleMenuPageParam param) {
		RoleMenuPage role = new RoleMenuPage();	  
		role.setRoleId(param.getRoleId()).setMenuId(param.getMenuId());
		if(StringUtils.isNotBlank(param.getRoleName())){
			role.setRoleName(param.getRoleName());
		}	
		if(StringUtils.isNotBlank(param.getMenuName())){
			role.setMenuName(param.getMenuName());
		}		
		return role;
	}		
	
	public static List<RoleMenu> wrapRoleMenuListAdd(RoleMenuUpdatePO roleMenuUpdatePO){		
		if(CollectionUtils.isEmpty(roleMenuUpdatePO.getMenuList())){
			return Collections.emptyList();
		}
		Set<Long> menusIds = roleMenuUpdatePO.getMenuList().stream().collect(Collectors.toSet());
		List<RoleMenu> roleMenus = new ArrayList<>(menusIds.size());
		menusIds.forEach(e->{
			RoleMenu roleMenu = new RoleMenu(roleMenuUpdatePO.getRoleId());
			roleMenu.setDeleted(Optional.ofNullable(roleMenuUpdatePO.getStatus()).orElse(0));
			roleMenu.setMenuId(e);
			AuthenticationUtil.setInsertFieldInfo(roleMenu);
			roleMenus.add(roleMenu);
		});
		return roleMenus;
	}
}
